// Boost.STL2 library
//
//  Copyright Fernando Pelliccioni 2012.
//  Use, modification and distribution is subject to the Boost Software
//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt)
//
// For more information, see http://www.boost.org/libs/range/
//

#ifndef bidir_range_HPP__
#define bidir_range_HPP__

#include <iterator>


//TODO: Iterator Category / Constraints

template <typename T>	
struct bidir_range
{
	typedef T& reference;

	bool empty() const;
	void pop_front();
	void pop_back();
	reference front() const;
	reference back() const;

};



//template <typename It>	
//struct bidir_range
//{
//	typedef	typename std::iterator_traits<It>::value_type value_type;
//
//	bidir_range( It begin, It end )
//		: begin_(begin), end_(end)
//	{}
//
//	bool empty() const
//	{
//		return begin_ >= end_;
//	}
//
//	void pop_front()
//	{
//		++begin_;
//	}
//
//	void pop_back()
//	{
//		--end_;
//	}
//
//	value_type front() const
//	{
//		return *begin_;
//	}
//
//	value_type back() const
//	{
//		//BOOST_ASSERT( !empty() );
//
//		It last(end_);
//		return *--last;
//
//
//		//return *(end_-1);
//	}
//
//private:
//
//	It begin_;
//	It end_;
//
//};

#endif // bidir_range_HPP__